package com.kt.common.`fun`

//扩展声明所在的类的实例称为 分发接收者  - Connection(a，b)
class Connection(val host: Host, val port: Int) {

    fun printPort() {
        print(port)
    }

    //对Host类的扩展
    fun Host.printConnectionToString() {
        printHostname()
        print(":")
        printPort()
    }

    //扩展接收者
    fun connect() {
        /*……*/
        host.printConnectionToString()   // 调用扩展函数
    }

    //分发接收者与扩展接收者的成员名字冲突的情况，扩展接收者优先。要引用分发接收者的成员你可以使用
    fun Host.getConnectionString() {
        toString()         // 调用 Host.toString()
        this@Connection.toString()  // 调用 Connection.toString()
    }

}